Skip to main content

Installation

说在前面,现在MM全系列框架仅支持在Linux或者MacOS上运行,Windows仍然处于实验阶段。

这是MMdetection系列教程的第一篇,那肯定是从最基础的安装开始!在食用这篇教程之前,首先需要了解版本的适配问题。不知道有多少人是否安装过Tensorflow1.x的版本,适配CUDA和Tensorflow的版本是一个老大难的问题了,mmdetection也需要这样的版本适配,但是,官方文档上有明确地写清楚版本的适配问题,这已经给众多小白提供了很大的便利,下面列出2021年8月30日当前版本的版本适配表格,请一定一定要按照文档所说的安装对应的版本,当代码运行不起来的时候请先思考是不是版本的问题!!!当代码运行不起来的时候请先思考是不是版本的问题!!!当代码运行不起来的时候请先思考是不是版本的问题!!!重要的事情说三遍!!

MMDetection versionMMCV version
mastermmcv-full>=1.3.8, <1.4.0
2.15.1mmcv-full>=1.3.8, <1.4.0
2.15.0mmcv-full>=1.3.8, <1.4.0
2.14.0mmcv-full>=1.3.8, <1.4.0
2.13.0mmcv-full>=1.3.3, <1.4.0
2.12.0mmcv-full>=1.3.3, <1.4.0
2.11.0mmcv-full>=1.2.4, <1.4.0
2.10.0mmcv-full>=1.2.4, <1.4.0
2.9.0mmcv-full>=1.2.4, <1.4.0
2.8.0mmcv-full>=1.2.4, <1.4.0
2.7.0mmcv-full>=1.1.5, <1.4.0
2.6.0mmcv-full>=1.1.5, <1.4.0
2.5.0mmcv-full>=1.1.5, <1.4.0
2.4.0mmcv-full>=1.1.1, <1.4.0
2.3.0mmcv-full==1.0.5
2.3.0rc0mmcv-full>=1.0.2
2.2.1mmcv==0.6.2
2.2.0mmcv==0.6.2
2.1.0mmcv>=0.5.9, <=0.6.1
2.0.0mmcv>=0.5.1, <=0.5.8

系统配置要求

  • Linux
  • Python 3.5或以上版本
  • PyTorch 1.1或更高版本
  • CUDA 9.0或更高
  • NCCL 2
  • GCC 4.9或更高
  • mmcv

环境配置准备

安装mmdetection推荐使用anaconda或者miniconda进行环境管理,所以我们先创建一个新的环境专门存放mmdetection等一系列环境。

  1. 创建conda虚拟环境并激活它
conda create -n openmmlab python=3.7 -y
conda activate openmmlab
  1. 安装PyTorch和torchvision等依赖库,这部分请根据PyTorch官方文档进行安装。
conda install pytorch torchvision -c pytorch

注意:请确保PyTorch对应自己运行环境的CUDA版本,你可以在官网上检查自己的CUDA版本所对应的PyTorch安装包。如果你的CUDA版本为10.1,则根据以下方式安装:

conda install pytorch cudatoolkit=10.1 torchvision -c pytorch

安装MMDetection

安装MMDetection主要有两种安装方法,一种方法是通过官方所开发的openmin包管理器进行安装,这是现在比较推荐的一种安装方式,他可以自动处理对应版本的环境依赖版本;另一种方法则是可以手动安装。

  • 自动安装
pip install openmim
mim install mmdet
  • 手动安装

a.安装mmcv

手动安装需要先安装mmcv-full或者mmcv(强烈推荐安装mmcv-full), openmmlab官方已经提供mmcv-full的预编译包,大大简化了用户安装编译的过程。强烈推荐通过预编译包来安装。

MMCV 有两个版本:

  • mmcv-full: 完整版,包含所有的特性以及丰富的开箱即用的 CUDA 算子。注意完整版本可能需要更长时间来编译。
  • mmcv: 精简版,不包含 CUDA 算子但包含其余所有特性和功能,类似 MMCV 1.0 之前的版本。如果你不需要使用 CUDA 算子的话,精简版可以作为一个考虑选项。

注意:只能安装mmcv或者mmcv-full其中一个库,否则会出现MoudleNotFoundError的报错。

pip install mmcv-full -f "https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html"

注意:这里有几个参数({cu_version},{torch_version}分别表示CUDA的版本和PyTorch的版本,你需要替换对应匹配的CUDA版本和PyTorch版本,参考本文开头的表格以及下方中的表格。例如:

pip install mmcv-full -f "https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html"

CUDA与PyTorch版本组合表:

CUDAtorch1.9torch1.8torch1.7torch1.6torch1.5torch1.4torch1.3
11.1cu_version=cu111,torch_version=torch1.9.0cu_version=cu111,torch_version=torch1.8.0
11.0cu_version=cu110,torch_version=torch1.9.0
10.2cu_version=102,torch_version=torch1.9.0cu_version=102,torch_version=torch1.8.0cu_version=102,torch_version=torch1.7.0cu_version=102,torch_version=torch1.6.0cu_version=102,torch_version=torch1.5.0
10.1cu_version=101,torch_version=torch1.8.0cu_version=101,torch_version=torch1.7.0cu_version=101,torch_version=torch1.6.0cu_version=101,torch_version=torch1.5.0cu_version=101,torch_version=torch1.4.0cu_version=101,torch_version=torch1.3.0
9.2cu_version=92,torch_version=torch1.7.0cu_version=92,torch_version=torch1.6.0cu_version=92,torch_version=torch1.5.0cu_version=92,torch_version=torch1.4.0cu_version=92,torch_version=torch1.3.0
cpucu_version=cpu,torch_version=1.9.0cu_version=cpu,torch_version=1.8.0cu_version=cpu,torch_version=1.7.0cu_version=cpu,torch_version=1.6.0cu_version=cpu,torch_version=1.5.0cu_version=cpu,torch_version=1.4.0cu_version=cpu,torch_version=1.3.0

除了使用预编译包之外,另一种方式是在本地进行编译,直接运行下述命令(不推荐)。本地编译可能会耗时 10 分钟以上,取决于使用的CPU性能。

pip install mmcv-full

有关自定义算子编译之后将另开mmcv专题文章专门写自定义算子相关的操作以及编译和安装。(先挖好坑。。。

b.安装MMDetection核心库

可以直接运行以下指令直接安装:

pip install mmdet

或者可以克隆源代码仓库进行编译和安装:

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e . # or "python setup.py develop"

c.安装额外的依赖

直接运行如下语句即可安装Instaboost,Panoptic Segmentation or LVIS dataset

# for instaboost
pip install instaboostfast
# for panoptic segmentation
pip install git+https://github.com/cocodataset/panopticapi.git
# for LVIS dataset
pip install git+https://github.com/lvis-dataset/lvis-api.git

注意:

  • 凡是指定了-e或者develop选项的pip安装过程,MMDetection安装的都是开发模式的框架,改动任何框架内部的改动只要没有重新安装都会起作用。
  • 如果你想安装opencv-python-headless而不是opencv-python,你可以安装opencv-python-headless在安装MMCV之前。
  • 有些依赖是可选的。只需要运行pip install -v -e .只会安装所需要的依赖。为了使用可选的依赖像albumentationsimagecorruptions,可以使用pip直接一起安装课选的依赖(e.g. pip install -v -e .[optional])[optional]有效的值分别有:all,tests,buildoptional

安装验证

安装完成后,使用一个小demo来验证安装是否成功,如果运行成功,则说明安装成功;如果运行失败,则根据报错排查原因。

from mmdet.apis import init_detector, inference_detector

config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# download the checkpoint from model zoo and put it in `checkpoints/`
# url: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image
inference_detector(model, 'demo/demo.jpg')

到此就安装结束啦!

其他安装方式

  • 编写脚本安装
conda create -n openmmlab python=3.7 -y
conda activate openmmlab

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y

# install the latest mmcv
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html

# install mmdetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .
  • 使用docker安装
# build an image with PyTorch 1.6, CUDA 10.1
docker build -t mmdetection docker/
# run
docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmdetection/data mmdetection